iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0

「上次字串的題目,不太簡單吧?」

「是呀!沒想到字串還有這麼多的學問」菁菁跟曉欣兩位看起來私下研究了一段時間,看得出非常興奮

「那今天我們再來寫一些字串的題目吧」夏天打開 13. Roman to Integer

出乎夏天的預料,兩人幾乎是立刻寫出了答案

class Solution {
    fun romanToInt(s: String): Int {
        var result = 0
        val map = mapOf(
            'I' to 1,
            'V' to 5,
            'X' to 10,
            'L' to 50,
            'C' to 100,
            'D' to 500,
            'M' to 1000
        )
        for (i in s.indices) {
            val s1 = map[s[i]] ?: continue
            if (i + 1 == s.length) {
                result += s1
                continue
            }
            val s2 = map[s[i + 1]] ?: continue
            if (s1 >= s2) {
                result += s1
            } else {
                result -= s1
            }
        }
        return result
    }
}

「咦?這麼快?那這一題呢?」夏天又打開了 1480. Running Sum of 1d Array

兩人竊竊私語了一陣,寫下了解答

class Solution {
    fun runningSum(nums: IntArray): IntArray {
        val result = IntArray(nums.size)
        result[0] = nums[0]
        for (i in 1 until nums.size) {
            result[i] = nums[i] + result[i - 1]
        }
        return result
    }
}

察覺兩人的異常,夏天問道「你們兩個今天怎麼啦?瞞著我做了什麼事?」

「嘿嘿——其實我們兩個在找夏姐之前,已經先做過幾題跟字串相關的題目囉!」兩人打開 leetcode 的答題紀錄,赫然看到前幾天的答題內容。

「你們真用功!花了不少時間吧」夏天開心的說

「也不能總是做不出題目,就靠夏天姐直接幫我們解答呀!我們還是要自己練習一下的」

「兩位真是太棒了!那這一題呢?」夏天打開了 2032. Two Out of Three

「這題就要看我的囉!聖佑的 《Kotlin Collection全方位解析攻略 : 精通原理及實戰,寫出流暢好維護的程式》 我可是重複看了好幾次!」曉欣自信的寫出。

class Solution {
    fun twoOutOfThree(a: IntArray, b: IntArray, c: IntArray) =
        (a + b + c).toSet().filter {
            arrayOf(a, b, c).count { ar -> ar.contains(it) } > 1
        }
}

看著曉欣自信寫程式的樣子,想到這還是一陣子之前,連兩個數字相加都不一定寫得出來的程式新手,現在的新人進步真是太快了呢,夏天欣慰的想。

「兩位真是太棒了!今天就讓我請客吧」夏天拿出錢包

「那今天晚餐就是夏慕尼囉!」「哇!謝謝夏天姐請客!」「不要亂說!我是說伯朗咖啡裡面的餐點我請啦!」


上一篇
Day 15:太小看字串會有意外的喔!10、20、657
下一篇
Day 17:兩人時光:1323、1859、709
系列文
Kotlin 程式人:Leetcode 意外旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言